<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>放大镜</title>
    <link rel="stylesheet" href="">
    <style>
        body{
            margin: 0;
            padding: 0;
        }
        img{
            display: block;
        }
        .header{
            height:100px;
        }
        .center{
            width:800px;
            margin:0 auto;
        }
        .box{
            position:relative;
            width:400px;
        }
        .box .thumb{
            position:relative;
            width:400px;
            height:400px;
        }
        .box .thumb img{
            width:100%;
            height:100%;
        }
        .box .thumb .move{
            position:absolute;
            top:0px;
            left:0px;
            display:none;
            width:200px;
            height:200px;
            background-color: rgba(0,0,0,0.4);
        }
        .box .scale{
            display:none;
            position:absolute;
            right:-420px;
            top:0;
            width:400px;
            height:400px;
            border:1px solid #ccc;
            overflow:hidden;
        }
        .box .scale img{
            position:absolute;
            left:0;
            top:0;
        }
        .box .thumb:hover .move{
            display:block;
        }
        .box .thumb:hover+.scale{
            display:block;
        }
    </style>
</head>
<body>
<div class="header"></div>
<div class="center">
    <div class="box">
        <div class="thumb">
            <img src="img/lianyiqunSmall1.jpg">
            <div class="move"></div>
        </div>
        <div class="scale">
            <img src="img/lianyiqunBig1.jpg">
        </div>
    </div>
</div>
<script>
   var zmFdj=function(){
     var thumbElem=document.getElementsByClassName("thumb")[0],
    // 获取缩略图距离页面左边的距离(可能有滚动条)
        thumbPosX=Math.round(thumbElem.getBoundingClientRect().left+document.documentElement.scrollLeft),
    // 获取缩略图距离页面顶部的距离
        thumbPosY=Math.round(thumbElem.getBoundingClientRect().top+document.documentElement.scrollTop);
    // 获取移动的元素
    var moveElem=document.getElementsByClassName("move")[0];

    thumbElem.onmousemove=function(e){
        // 获取移动的元素的宽和高
        var moveElemW=moveElem.offsetWidth;
        var moveElemH=moveElem.offsetHeight;
        // 计算移动元素距离缩略图左边和顶部的距离
        var x=e.pageX-thumbPosX;
        var y=e.pageY-thumbPosY;
        // 设置鼠标指针在移动元素的中间位置
        moveElem.style.left=x-moveElemW/2+"px";
        moveElem.style.top=y-moveElemH/2+"px";
        // 移动元素不能超出区域
        if(parseInt(moveElem.style.left)<0){
            moveElem.style.left=0;
        }else if(parseInt(moveElem.style.left)>(thumbElem.offsetWidth-moveElemW)){
            moveElem.style.left=thumbElem.offsetWidth-moveElemW+"px";
        }
        if(parseInt(moveElem.style.top)<0){
            moveElem.style.top=0;
        }else if(parseInt(moveElem.style.top)>(thumbElem.offsetHeight-moveElemH)){
            moveElem.style.top=thumbElem.offsetHeight-moveElemH+"px";
        }
        // 放大的倍数
        var sca=thumbElem.offsetWidth/moveElemW;
        var scaleEle=document.getElementsByClassName("scale")[0];
        // 放大图片的位置
        // 向左边拉动放大镜20px 放大倍数是两倍 就是要把大图的定位的left值向负方向移动  2*20px
        var img=scaleEle.getElementsByTagName("img")[0];
        img.style.left=-(sca*parseInt(moveElem.style.left))+"px";
        img.style.top=-(sca*parseInt(moveElem.style.top))+"px";
    }
   }
   zmFdj();


</script>
</body>
</html>